package com.bob.web.entity.system;

import com.bob.web.entity.BaseIncIdEntity;
import lombok.Data;
import org.springframework.data.annotation.Transient;
import java.util.Date;
import java.util.List;

/**
 * 名称: Resource<br>
 * 描述:资源<br>
 * 类型: JAVA<br>
 * 最近修改时间:2017/7/31 14:14<br>
 *
 * @author BoYangsh
 * @version [版本号, V1.0]
 * @since 2017/7/31 14:14
 */
@Data
public class Resource extends BaseIncIdEntity<Long> {
	//===========================authorityType start================================
	/**
	 * 权限类型: 公共权限(该权限的访问不需要授权不需要认证，属于公共资源)
	 */
	public static final Integer AUTHORITY_TYPE_PUBLIC = 1;
	/**
	 * 权限类型：认证权限（该资源的访问需要认证，也就是需要是登陆状态下才能访问该资源）
	 */
	public static final Integer AUTHORITY_TYPE_AUTHENTICATION = 2;
	/**
	 * 权限类型：授权权限（该资源的访问需要分配拥有该资源的角色才可以进行访问）
	 */
	public static final Integer AUTHORITY_TYPE_AUTHORIZATION = 3;
	//===========================authorityType end================================

	//===========================type start================================
	/**
	 * 资源类型：菜单类型（对应页面上的一个菜单，一级菜单只有route，二级菜单有route和uri，本项目的设计有两级菜单）
	 */
	public static final Integer TYPE_MENU = 1;
	/**
	 * 资源类型：按钮类型（对于页面上的一个按钮，每个按钮对应一个uri）
	 */
	public static final Integer TYPE_BUTTON = 2;
	/**
	 * 资源类型：接口类型（完全不对应任何页面UI资源的接口uri，仅仅是提供了数据请求的入口）
	 */
	public static final Integer TYPE_INTERFACE = 3;
	//===========================type end================================

	//===========================menuLevel start================================
	/**
	 * 菜单等级：一级菜单
	 */
	public static final Integer MENU_LEVEL_FIRST = 1;
	/**
	 * 菜单等级：二级菜单
	 */
	public static final Integer MENU_LEVEL_SECONDE = 2;
	//===========================menuLevel end================================

	//===========================tag start================================
	/**
	 * 标签：404 (当访问的资源不存在的时候，就重定向到该tag标记的接口)
	 */
	public static final Integer TAG_404 = 1;
	/**
	 * 标签：未授权（当访问的资源需要授权却没有授权的时候，就重定向到该tag标记的接口）
	 */
	public static final Integer TAG_NO_AUTH = 2;
	/**
	 * 标签：未登录（当访问的资源需要登录但是却没有登陆，就重定向到该tag标记的接口）
	 */
	public static final Integer TAG_NO_LOGIN = 3;
	//===========================tag end================================

	private Integer authorityType;
	private Integer type;
	private Long pId;
	private Integer tag;
	private Integer menuLevel;
	private String name;
	private String uri;
	private String route;
	private String desc;
	private Long adminId;
	private Date createTime;
	@Transient
	private String adminName;
	@Transient
	private boolean checked;
	@Transient
	private List<Resource> childResources;
}
